package condominios.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Date;
import java.util.ArrayList;
import java.util.Collection;
import java.text.SimpleDateFormat;

import condominios.excepcion.DAOExcepcion;
import condominios.modelo.Persona;
import condominios.modelo.Queja;
import condominios.modelo.TipoQueja;
import condominios.util.ConexionBD;

public class QuejaDAO extends BaseDAO {
	
	java.text.DateFormat dtf = new SimpleDateFormat("dd/MM/yyyy");
	
	public Queja insertar(Queja vo) throws DAOExcepcion {
		
		String query = "INSERT INTO queja (idPersona, idTipoQueja,motivo,fechaQueja,estado,estadoRegistro) VALUES (?,?,?,?,?,?)";
				
		System.err.println(query);
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			
			stmt.setInt(1, vo.getIdPersona());
			stmt.setInt(2, vo.getIdTipoQueja());
			stmt.setString(3, vo.getMotivo());
			stmt.setString(4, vo.getFechaQueja());
			stmt.setString(5, (String) vo.getEstado());
		
			stmt.setInt(6,1);

			int i = stmt.executeUpdate();
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return vo;
	}
	
	public Collection<Queja> buscarTodos()
		
		throws DAOExcepcion {
		String query = "select queja.idQueja, persona.nombre, persona.apellidoPaterno,persona.apellidoMaterno,tipoqueja.descripTipoQueja, "
					   + "queja.motivo, queja.fechaQueja, queja.estado from queja inner join persona on queja.idPersona = persona.idPersona "
					   + "inner join tipoqueja on queja.idTipoQueja = tipoqueja.idTipoQueja";
		
		Collection<Queja> c = new ArrayList<Queja>();
		Connection con = null;
		PreparedStatement stmt = null;
		ResultSet rs = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);	
			rs = stmt.executeQuery();
			while (rs.next()) {
				Queja vo = new Queja();
				
				vo.setIdQueja(rs.getInt("queja.idQueja"));
				vo.setMotivo(rs.getString("queja.motivo"));
				vo.setFechaQueja((String)dtf.format(rs.getDate("cuota.fechaVencimiento")));
				vo.setEstado(rs.getString("queja.estado"));
				
				Persona pe = new Persona();
				pe.setNombres(rs.getString("persona.nombre"));
				pe.setApellidoPaterno(rs.getString("persona.apellidoPaterno"));
				pe.setApellidoMaterno(rs.getString("persona.apellidoMaterno"));
				
				vo.setDatosPersona(pe);
				
				TipoQueja tq = new TipoQueja();
				tq.setDescripTipoQueja(rs.getString("tipoqueja.descripTipoQueja"));
				
				vo.setDatosTipoQueja(tq);
										
				c.add(vo);
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarResultSet(rs);
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
		return c;
	}

}
